Using Call Appearances
You can use the Telephone Manager to place outgoing calls, answer incoming calls, reject incoming calls, place incoming calls on hold, retrieve a held call, transfer a call, place a callback, and perform a number of other operations on incoming and outgoing call appearances. This section describes how to perform some of these tasks.Placing an Outgoing Call
To place an outgoing call, you must first have performed all the required initialization and opened a terminal. Then you can use theTELDialDigits
function to dial a specified directory number. Listing 4-1 illustrates how to place an outgoing call.Listing 4-1 Placing an outgoing call
OSErr MyPlaceCall (TELHandle myTelRec) { OSErr myErr; TELDNHandle myDN; TELCAHandle myCA; myErr = TELDNLookupByIndex(myTelRec, telAllDNs, true, 1, &myDN); if (!myErr) { myErr = TELSetupCall(myDN, &myCA, nil, nil, nil, nil, 0, 0); if (!myErr) { long myTicks; myErr = TELDialDigits(myCA, "\p5551212"); if (!myErr) { Delay(20*60, &myTicks); TELDrop(myCA, nil); } TELCADispose(myCA); } TELDNDispose(myDN); } return(myErr); }Listing 4-2 provides the source code for a complete application that places an outgoing call. Several of the functions it uses have been defined in earlier chapters.Listing 4-2 A complete telephony application
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <CommResources.h>#include "Telephones.h" OSErr MyInitCTBManagers (void); short MyGetFirstTelTool (void); OSErr MyPlaceCall (TELHandle myTelRec); OSErr MyInitCTBManagers (void) { OSErr myErr = noErr; myErr = InitCRM(); //initialize Comm'ns Resource Manager if (myErr == noErr) { //initialize CTB Utilities myErr = InitCTBUtilities(); if (myErr == noErr) myErr = InitTEL(); //initialize Telephone Manager } return(myErr); } short MyGetFirstTelTool (void) { OSErr myErr = noErr; short myIndex; short myID = -1; Str255 myName; for (myIndex = 1; myID == -1; myIndex++) { myErr = CRMGetIndToolName(classTEL, myIndex, myName); if (myErr != noErr) break; if (*myName == nil) break; myID = TELGetProcID(myName); } return(myID); } OSErr MyPlaceCall (TELHandle myTelRec) { OSErr myErr; TELDNHandle myDN; TELCAHandle myCA; myErr = TELDNLookupByIndex(myTelRec, telAllDNs, true, 1, &myDN); if (!myErr) { myErr = TELSetupCall(myDN, &myCA, nil, nil, nil, nil, 0, 0); if (!myErr) { long myTicks; myErr = TELDialDigits(myCA, "\p5551212"); if (!myErr) { Delay(20*60, &myTicks); TELDrop(myCA, nil); } TELCADispose(myCA); } TELDNDispose(myDN); } return(myErr); } void main (void) { if (MyInitCTBManagers() == noErr) { short myID = MyGetFirstTelTool(); if (myID != -1) { TELHandlemyTelRec; OSErr myErr; myTelRec = TELNewWithResult(id, 0, 0, 0, &myErr); if (!myErr) { Point myPoint = {80, 80}; myErr = TELChoose(&myTelRec, myPoint, nil); myErr = TELOpenTerm(myTelRec); if (!myErr) { myErr = MyPlaceCall(myTelRec); TELCloseTerm(myTelRec); } TELDispose(myTelRec); } } } }
Main | Top of Section | What's New | Apple Computer, Inc. | Find It | Feedback | Help